package threadpool;

import threadpool.MyRunnable;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * Created by L.jp
 * Description:
 * User: 86189
 * Date: 2022-08-07
 * Time: 23:32
 */
/*线程池-ThreadPoolExecutor
创建线程池对象 :
ThreadPoolExecutor threadPoolExecutor =
    new ThreadPoolExecutor(核心线程数量,最大线程数量,空闲线程最大存活时间,
                            任务队列,创建线程工厂,任务的拒绝策略);

*/
public class MyThreadPoolDemo3 {
    // 参数一：核心线程数量
// 参数二：最大线程数
// 参数三：空闲线程最大存活时间
// 参数四：时间单位
// 参数五：任务队列（存放任务，有线程空闲就从阻塞队列调出去执行）
// 参数六：创建线程工厂（线程默认方式创建线程）
// 参数七：任务的拒绝策略（当提交的任务数大于线程池的任务数+阻塞队列的任务数就会拒绝任务，如何拒绝就靠拒绝策略）
    public static void main(String[] args) {
        ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(
                2,
                5,
                10,
                TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(5),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.AbortPolicy()
        );
        threadPoolExecutor.submit(new MyRunnable());
        threadPoolExecutor.submit(new MyRunnable());
        threadPoolExecutor.shutdown();
    
    }
    
}
